/**
 * 字典工具函数
 * 用于获取和操作字典数据
 */

/**
 * 获取字典数据
 * @returns {Object} 字典数据对象
 */
export const getDictionary = () => {
  try {
    const dictStr = localStorage.getItem('h5_dictionary')
    if (dictStr) {
      return JSON.parse(dictStr)
    }
  } catch (error) {
    console.error('获取字典数据失败:', error)
  }
  return {}
}

/**
 * 根据字典类型和值获取标签
 * @param {string} dictType - 字典类型，如：'充电站运营状态'
 * @param {string} value - 字典值，如：'1'
 * @returns {string} 字典标签，如：'正常运营'
 */
export const getDictLabel = (dictType, value) => {
  console.log(`[getDictLabel] 开始查找字典标签，字典类型: ${dictType}, 值: ${value}`)
  
  const dict = getDictionary()
  console.log(`[getDictLabel] 获取到的字典数据:`, dict)
  
  const dictItems = dict[dictType]
  console.log(`[getDictLabel] 字典类型 ${dictType} 对应的数据:`, dictItems)
  
  if (!dictItems) {
    console.log(`[getDictLabel] 未找到字典类型 ${dictType}，返回原始值: ${value}`)
    return value || ''
  }
  
  // 查找对应的标签
  for (const [label, val] of Object.entries(dictItems)) {
    console.log(`[getDictLabel] 检查项: label=${label}, value=${val}`)
    if (val === value) {
      console.log(`[getDictLabel] 找到匹配项: ${label} -> ${val}`)
      return label
    }
  }
  
  console.log(`[getDictLabel] 未找到匹配项，返回原始值: ${value}`)
  return value || ''
}

/**
 * 根据字典类型获取所有选项
 * @param {string} dictType - 字典类型
 * @returns {Array} 选项数组，格式：[{label: '标签', value: '值'}]
 */
export const getDictOptions = (dictType) => {
  const dict = getDictionary()
  const dictItems = dict[dictType]
  
  if (!dictItems) {
    return []
  }
  
  return Object.entries(dictItems).map(([label, value]) => ({
    label,
    value
  }))
}

/**
 * 获取所有字典类型
 * @returns {Array} 字典类型数组
 */
export const getDictTypes = () => {
  const dict = getDictionary()
  return Object.keys(dict)
}

/**
 * 检查字典数据是否已加载
 * @returns {boolean} 是否已加载
 */
export const isDictionaryLoaded = () => {
  return !!localStorage.getItem('h5_dictionary')
}

/**
 * 清除字典数据缓存
 */
export const clearDictionaryCache = () => {
  localStorage.removeItem('h5_dictionary')
}

export default {
  getDictionary,
  getDictLabel,
  getDictOptions,
  getDictTypes,
  isDictionaryLoaded,
  clearDictionaryCache
}